using MediatR;
using ProduceBasicData.Api.DTO;
using ProduceBasicData.ErrorCode;

namespace ProduceBasicData.Api.Application.Command.OutboundOrder
{
    /// <summary>
    /// 获取出货订单数据命令类
    /// </summary>
    public class GetOutboundOrderDataCommand : IRequest<ApiResult<OutboundOrderChartDto>>
    {
        /// <summary>
        /// 时间周期类型（1上月，2本月，3近6个月，4自定义）
        /// </summary>
        public int TimePeriodType { get; set; } = 2; // 默认本月

        /// <summary>
        /// 开始日期（当TimePeriodType=4时使用）
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// 结束日期（当TimePeriodType=4时使用）
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// 客户ID（可选，用于筛选特定客户）
        /// </summary>
        public int? CustomerId { get; set; }

        /// <summary>
        /// 出库类型（可选，1生产领料，2销售出库，3调拨出库，4退货出库，5其他出库）
        /// </summary>
        public int? OutType { get; set; }

        /// <summary>
        /// 出库状态（可选，1待审核，2已审核，3出库中，4已完成，5已取消）
        /// </summary>
        public int? Status { get; set; }

        /// <summary>
        /// 排序方式（1按订单数量升序，2按订单数量降序，3按客户名称，4按同比变化）
        /// </summary>
        public int SortType { get; set; } = 2; // 默认按订单数量降序

        /// <summary>
        /// 页容量（0表示不分页）
        /// </summary>
        public int PageSize { get; set; } = 10;

        /// <summary>
        /// 是否包含图表数据
        /// </summary>
        public bool IncludeChartData { get; set; } = true;

        /// <summary>
        /// 是否只显示有订单的客户
        /// </summary>
        public bool OnlyWithOrders { get; set; } = true;
    }
}





